package com.boil.qz.safekavass.web.controller;

import com.boil.pojo.ResultVo;
import com.boil.util.Constants;
import com.boil.util.OkBaseController;
import org.apache.shiro.session.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * 错误 Controller。
 *
 * @author ChenYong
 * @date 2015-11-24
 */
@Controller
@RequestMapping("/web/error")
public class ErrorController extends OkBaseController {
    /**
     * 403 页面。
     * <br>
     * <span style="color: red">没有权限访问。</span>
     *
     * @param model 模型
     * @return 403 页面-“view/error/403.jsp”
     */
    @RequestMapping(method = RequestMethod.GET, value = "/403.html")
    public String error403(Model model) {
        Session session = getSession();
        ResultVo resultVo = (ResultVo) session.getAttribute(Constants.ERROR_403_STR);

        session.removeAttribute(Constants.ERROR_403_STR);

        model.addAttribute(Constants.RESULT_VO, resultVo);

        return "/error/403";
    }

    /**
     * 404 页面。
     * <br>
     * <span style="color: red">页面未找到。</span>
     *
     * @param model 模型
     * @return 404 页面-“view/error/404.jsp”
     */
    @RequestMapping(method = RequestMethod.GET, value = "/404.html")
    public String error404(Model model) {
        return "/error/404";
    }

    /**
     * 404 页面。
     * <br>
     * <span style="color: red">页面未找到。</span>
     *
     * @param model 模型
     * @return 404 页面-“view/error/404.jsp”
     */
    @RequestMapping(method = RequestMethod.GET, value = "/404/1.html")
    public String error404_1(Model model) {
        return "redirect:/web/error/404.html";
    }

    /**
     * 412 页面。
     * <br>
     * <span style="color: red">请求参数不合法。</span>
     *
     * @param model 模型
     * @return 参数校验失败的页面-“view/error/412.jsp”
     */
    @RequestMapping(method = RequestMethod.GET, value = "/412.html")
    public String error412(Model model) {
        Session session = getSession();
        ResultVo resultVo = (ResultVo) session.getAttribute(Constants.ERROR_412_STR);

        session.removeAttribute(Constants.ERROR_412_STR);

        model.addAttribute(Constants.RESULT_VO, resultVo);

        return "/error/412";
    }

    /**
     * 500 页面。
     * <br>
     * <span style="color: red">服务器内部错误。</span>
     *
     * @param model 模型
     * @return 500 页面-“view/error/500.jsp”
     */
    @RequestMapping(method = RequestMethod.GET, value = "/500.html")
    public String error500(Model model) {
        Session session = getSession();
        ResultVo resultVo = (ResultVo) session.getAttribute(Constants.ERROR_500_STR);

        session.removeAttribute(Constants.ERROR_500_STR);

        model.addAttribute(Constants.RESULT_VO, resultVo);

        return "/error/500";
    }
}